package com.jrx.anytxn.param.mapper.ext;

import com.jrx.anytxn.common.annotation.ParamTuningAnnotation;
import com.jrx.anytxn.param.entity.PrCreditLimitType;
import com.jrx.anytxn.param.mapper.base.PrCreditLimitTypeMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author by yf
 * @Classname ExtPrCreditLimitTypeMapper
 * @Description 额度节点mapper
 * @Date 2019/6/12 0012 下午 18:23
 */
public interface ExtPrCreditLimitTypeMapper extends PrCreditLimitTypeMapper {

    /**
     * 根据租户ID查询所有额度模板节点表信息
     *
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.PrCreditLimitType>
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:21
     */
    List<PrCreditLimitType> selectByTenId(String tenantId);

    /**
     * 根据租户ID和节点ID查询信息
     *
     * @param tenantId 租户ID
     * @param limitId  节点ID
     * @return com.jrx.anytxn.param.entity.PrCreditLimitType
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:27
     */
    PrCreditLimitType selectByTenIdAndLimitId(@Param("tenantId") String tenantId, @Param("limitId") String limitId);

    /**
     * 根据租户ID和节点ID删除此条信息
     *
     * @param tenantId 租户ID
     * @param limitId  节点ID
     * @return int
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:30
     */
    @ParamTuningAnnotation
    int deleteByTenIdAndLimitId(@Param("tenantId") String tenantId, @Param("limitId") String limitId);

    /**
     * 根据额度类型id，组织id和额度类型判断是否存在   ???
     *
     * @param prCreditLimitType
     * @return
     */
    PrCreditLimitType selectByConditions(PrCreditLimitType prCreditLimitType);

    /**
     * 根据机构号和租户ID查询额度节点列表
     *
     * @param orgId    机构号
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.entity.PrCreditLimitType>
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:29
     */
    List<PrCreditLimitType> selectByOrgIdAndTenId(@Param("orgId") String orgId, @Param("tenantId") String tenantId);

    /**
     * 根据租户ID，节点ID和机构号查询信息
     *
     * @param tenantId 租户ID
     * @param limitId  节点ID
     * @param orgId    机构号
     * @return com.jrx.anytxn.param.entity.PrCreditLimitType
     * @author fan.yang
     * date: 2019/10/16 0016 上午 11:33
     */
    PrCreditLimitType selectByTenIdAndLimitIdAndOrgId(@Param("tenantId") String tenantId, @Param("limitId") String limitId, @Param("orgId") String orgId);

    /**
     * 根据租户ID和节点ID更新
     *
     * @param creditLimitType 额度节点实体
     * @return int
     * @author fan.yang
     * date: 2019/10/16 0016 下午 13:23
     */
    @ParamTuningAnnotation
    int updateByTenIdAndLimitId(PrCreditLimitType creditLimitType);

    /**
     * 获取额度属性
     *
     * @param limitId        节点ID
     * @param organizationId 机构号
     * @param tenantId       租户ID
     * @return java.lang.String
     * @author fan.yang
     * date: 2019/10/17 0017 下午 18:25
     */
    String selectUserModal(@Param("limitId") String limitId, @Param("organizationId") String organizationId, @Param("tenantId") String tenantId);

    /**
     * 根据租户id， 机构号，额度节点id集合 查询额度节点集合
     * @param tenantId 租户id
     * @param organizationId 机构号
     * @param limitList 额度节点集合
     * @return List<PrCreditLimitType>
     */
    List<PrCreditLimitType> selectByTenIdAndOrgIdAndLimitIds(@Param("tenantId")String tenantId, @Param("organizationId")String organizationId, @Param("limitList")List<String> limitList);

}
